package optimizacion;

public class CromosomaFuncion3 extends Cromosoma{
    
	final static double x_min = -3;
    final static double x_max = 12.1;
    final static double y_min = 4.1;
    final static double y_max = 5.8;
	
    public CromosomaFuncion3(int numGenes, double tolerancia){
    	super(numGenes, tolerancia);
    	this.numGenes = numGenes;
    	this.tolerancia = tolerancia;
    	crearGenIesimo(x_min, x_max, 0);
    	crearGenIesimo(y_min, y_max, 1);
    	calcularLongitud();
    }
    
    public CromosomaFuncion3(){
    	super();
    }
    
    @Override
    public double calcularAptitud() {   
    	double feno1 = calcularFenotipoIesimo(x_min, x_max, 0);
    	double feno2 = calcularFenotipoIesimo(y_min, y_max, 1);
    	aptitud =  Funciones.f3(feno1, feno2);
    	aptitudRev = aptitud;
    	aptitudEscaladoLineal = aptitud;
    	return aptitud;
    }
    
 
    public double revisarAptitud(double cmax) {  
    	aptitudRev = aptitud;
    	aptitudEscaladoLineal = aptitud;
    	return aptitud;
    }    
    
    public CromosomaFuncion3 clone (){
    	CromosomaFuncion3 crom = new CromosomaFuncion3();

    	crom.numGenes = numGenes;
    	crom.longitud = longitud;
    	crom.aptitud = aptitud;
    	crom.aptitudRev = aptitudRev;
    	crom.aptitudEscaladoLineal = aptitudEscaladoLineal;
    	crom.puntuacion = puntuacion;
    	crom.puntuacionAcumulada = puntuacionAcumulada;
    	crom.tolerancia = tolerancia;
    	
    	crom.genes = new GenBinario[longitud];
    	
    	for (int i = 0; i < numGenes; i++)
    		crom.genes[i] = genes[i].clone();    	
    	
    	return crom;
    }
}
